package com.bl.andr.permission;

import android.Manifest;
import android.os.Build;
import androidx.annotation.RequiresApi;

/**
 * Desc:   Android 6.0的运行时权限的授权机制：
 * ******* 1、当申请某个危险权限的时候，如果用户在手机后台已经对分组内的其他危险权限进行了授权，那么系统会立即授权该权限（需要申请的），
 * ********** 不会让用户进行点击授权，比如app后台已经授权READ_EXTERNAL_STORAGE （读取外部存储器），
 * ********** 当你申请WRITE_EXTERNAL_STORAGE （写外部存储器）的时候，系统会立即授权，不会再让点击授权。
 * ******* 2、需要点击申请危险权限的时候，弹出对话框，这个对话框是不可以定制的；
 * ********** 对话框的文本说明，是对整个组的权限说明，而非某一项的。
 * ******* 3、不要对权限组过多的依赖，尽量对每一个运行时权限都进行申请
 *
 * Creator ling
 * Date:   2017/11/6 0006 15:25
 */
public interface Permissions {

    // 通讯录 3
    String WRITE_CONTACTS = Manifest.permission.WRITE_CONTACTS;  // 写入通讯录
    String READ_CONTACTS = Manifest.permission.READ_CONTACTS;    // 读取通讯录
    String GET_ACCOUNTS = Manifest.permission.GET_ACCOUNTS;      // 访问通讯录权限

    // 电话  7
    String READ_PHONE_STATE = Manifest.permission.READ_PHONE_STATE;               // 读取手机状态
    String CALL_PHONE = Manifest.permission.CALL_PHONE;                           // 打电话

    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    String READ_CALL_LOG = Manifest.permission.READ_CALL_LOG;                     // 看电话记录
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    String WRITE_CALL_LOG = Manifest.permission.WRITE_CALL_LOG;                  // 编写调用日志
    String USE_SIP = Manifest.permission.USE_SIP;                                // 使用SIP
    String PROCESS_OUTGOING_CALLS = Manifest.permission.PROCESS_OUTGOING_CALLS;  // 过程输出调用
    String ADD_VOICEMAIL = Manifest.permission.ADD_VOICEMAIL;                   // 添加语音信箱

    // 日历 2
    String READ_CALENDAR = Manifest.permission.READ_CALENDAR;                 //读取日历
    String WRITE_CALENDAR = Manifest.permission.WRITE_CALENDAR;               // 写入日历

    // 照相机 1
    String CAMERA = Manifest.permission.CAMERA;

    // 传感器 1
    @RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
    String BODY_SENSORS = Manifest.permission.BODY_SENSORS;

    // 位置  2
    String ACCESS_FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;      // 获取精确位置
    String ACCESS_COARSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;  // 获取大致位置

    // 存储  2
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    String READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE;    // 读取外部存储器
    String WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;  // 写入外部存储器

    // 麦克风 1
    String RECORD_AUDIO = Manifest.permission.RECORD_AUDIO;  // 录音

    // 信息 5
    String READ_SMS = Manifest.permission.READ_SMS;                    // 读取信息
    String SEND_SMS = Manifest.permission.SEND_SMS;                    // 发信息
    String RECEIVE_WAP_PUSH = Manifest.permission.RECEIVE_WAP_PUSH;    // 收到WAP推送
    String RECEIVE_MMS = Manifest.permission.RECEIVE_MMS;              // 接收彩信
    String RECEIVE_SMS = Manifest.permission.RECEIVE_SMS;              // 接收信息
}
